BugkuCTF–flag在index里(附加文件包含漏洞整理) | 您所在的位置:网站首页 › bugku ctf flag在index里 › BugkuCTF–flag在index里(附加文件包含漏洞整理) |
题目描述
flag在index里面,查看一下源码,发现没有什么有用的东西。然后点击了click me 那个链接 只蹦出来一个test5 也是没有什么东西。 一度陷入僵局,后来查阅才知道,题目的解题点在url后缀的file里面。是ctf套路,典型的文件包含漏洞。 文件包含漏原理文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。 php 中引发文件包含漏洞的通常是以下四个函数: 1、include() 当使用该函数包含文件时,只有代码执行到 include() 函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。 2、include_once() 功能和 include() 相同,区别在于当重复调用同一文件时,程序只调用一次。 3、require() 只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行 4、require_once() 它的功能与 require() 相同,区别在于当重复调用同一文件时,程序只调用一次。 当使用这四个函数包含一个新文件时,该文件将作为 PHP 代码执行,php 内核并不在意该被包含的文件是什么类型。所以如果被包含的是 txt 文件、图片文件、远程 url、也都将作为 PHP 代码执行。这一特性,在实施攻击时非常有用。 分类文件包含漏洞可以分为RFI(远程文件包含漏洞)和LFI(本地文件包含漏洞)两种。而区分他们最简单的方法就是 php.ini 中是否开启了allow_url_include。如果开启 了我们就有可能包含远程文件。 1、本地文件包含 LFI(Local File Include) 2、远程文件包含 RFI(Remote File Include)(需要 php.ini 中 allow_url_include=on、allow_url_fopen = On) 在 php.ini 中,allow_url_fopen 默认一直是 On,而 allow_url_include 从 php5.2 之后就默认为 Off。 关于文件包含漏洞以及常见类型 接下来用到的是PHP的输入输出流协议, php://,官方文档;这个主要是用来让php读取自己的输入流和输出流 这里主要用了php://filter 因此构造payload http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php 这里为什么要采取base64-encode 是因为如果不将网页转换成base64编码,就会默认执行php代码。 so,得到base64加密的返回值 然后直接在线base64解密 得到php源码 |
CopyRight 2018-2019 实验室设备网 版权所有 |